﻿using System;
using Microsoft.Surface.Core;

namespace Black.SurfaceToolkit.Tools
{
    /// <summary>
    /// Encapsule la gestion des contacts pour un balayage bas niveau.
    /// </summary>
    public class CoreContact : EventArgs
    {
        #region Accesseurs

        /// <summary>
        /// Obtient une valeur indiquant si le contact a changé depuis le dernier balayage.
        /// </summary>
        public bool Changed
        {
            get;
            internal set;
        }

        /// <summary>
        /// Obtient le contact associé.
        /// </summary>
        public Contact Contact
        {
            get;
            private set;
        }

        /// <summary>
        /// Obtient une valeur indiquant si le contact a été détruit.
        /// </summary>
        public bool IsAlive
        {
            get;
            internal set;
        }

        #endregion

        #region Constructeurs

        /// <summary>
        /// Initialise une nouvelle instance de <see cref="T:Black.SurfaceToolkit.Tools.CoreContact" />.
        /// </summary>
        /// <param name="p_oContact"><see cref="T:Microsoft.Surface.Core.Contact" /> associé.</param>
        public CoreContact(Contact p_oContact)
            : base()
        {
            // Vérification

            if (p_oContact == null)
                throw (new ArgumentNullException("p_oContact", "L'instance du contact ne peut être NULL."));

            // Initialisation

            this.Changed = false;
            this.Contact = p_oContact;
            this.IsAlive = true;
        }

        #endregion
    }
}
